论文:《Identifying Encrypted Malware Traffic with Contextual Flow Data》
核心点:
1.传统的流量特征提取方式一般聚焦在数据包大小和时间有关的参数上;本文拓充了特征提取范围,运用好到了完整的TLS我输数据包、同TLS握手数据包同一来源的DNS数据流和5分钟窗口内的HTTP数据流(后两者被称为contextual flow)
contextual flow:同TLS握手数据包同一来源的DNS数据流和5分钟窗口内的HTTP数据流
contextual flow特征分析角度
1.DNS流
主要分析从DNS服务器中返回带有一个地址的响应以及和这个地址相关联的TLL值。
2.HTTP流
主要分析HTTP header中的各种属性。
3.TLS流
握手包中提供的信息。
特征来源
1.TLS流
TLS流在交互之初是不加密的,因为其需要和远程服务器进行握手。我们可以观测到的未加密TLS元数据包括clientHello
和clientKeyExchange
。从这些包的信息中,我们可以推断出客户端使用的TLS库等信息。从这些信息中,我们可以发现,良性流量的行为轨迹与恶意流量是十分不同的。
客户端方面
Offered Ciphersuites:恶意流量更喜欢在
clientHello
中提供0x0004(TLS_RSA_WITH_RC4_128_MD5)
套件,而良性流量则更多提供0x002f(TLS_RSA_WITH_AES_128_CBC_SHA)
套件Advertised TLS Extensions:大多数TLS流量提供
0x000d(signature_algorithms)
,但是良性流量会使用以下很少在恶意流量中见到的参数:0x0005 (status request)、0x3374 (next protocol negotiation)、0xff01 (renegotiation info客户端公钥:良性流量往往选择256-bit的椭圆曲线密码公钥,而恶意流量往往选择2048-bit的RSA密码公钥。
**服务端方面**
我们能够从serverHello
流中得到服务端选择的Offered Ciphersuites
和Advertised TLS Extensions
信息。
证书链长度:在
certificate
流中,我们能够得到服务端的证书链,长度为1的证书链中70%都来自恶意流量的签名,0.1%来自良性流量的自签名
2.DNS流
恶意软件往往使用域名生成算法来随机生成域名(DGA),这是一个明显区别于普通流量的行为。
3.HTTP流
请求报头:良性流量最常用的属性为User-Agent,Accept-Encoding和Accept-Language。
响应报头:恶意流量最常用的属性为Server、Set-Cookie和Location;良性流量最常用的属性为Connection、Expires和Last-Modified
属性观察值:
Content-Type:良性最常用的为image/\,恶意流量最常用的是text/\
MIME:恶意流量常常为text/html;charset=UTF-8以及text/html;charset=utf-8
User-Agent:恶意流量常常为Opera/9.50(WindowsNT6.0;U;en)、Mozilla/5.0或Mozilla/4.0;而良性流量通常为
Windows
或OS X
版本的Mozilla/5.0
。
实验效果
虽然检测准确率是99.9%,但是由于样本极度不均衡,因此准确率并不具有很大的参考意义。而再看上表中的检出率最高的也只有83%,因此效果并不理想。